package basics.syntax;

/**
 * Java 基础语法示例
 * 
 * 知识点：
 * 1. 注释
 *    - 单行注释：//
 *    - 多行注释：/* ... *\/
 *    - 文档注释：/** ... *\/
 * 
 * 2. 标识符命名规则
 *    - 由字母、数字、下划线(_)和美元符号($)组成
 *    - 不能以数字开头
 *    - 不能使用Java关键字
 *    - 区分大小写
 *    - 类名：首字母大写，驼峰命名法（如：BasicSyntaxDemo）
 *    - 变量和方法：首字母小写，驼峰命名法（如：studentName, getStudentInfo）
 *    - 常量：全部大写，单词间用下划线分隔（如：MAX_VALUE）
 *    - 包名：全部小写，单词间用点号分隔（如：com.example.project）
 * 
 * 3. 变量声明与初始化
 *    - 基本数据类型：
 *      * 整数类型：byte(1字节), short(2字节), int(4字节), long(8字节)
 *      * 浮点类型：float(4字节), double(8字节)
 *      * 字符类型：char(2字节)
 *      * 布尔类型：boolean(1字节)
 *    - 引用数据类型：
 *      * 类类型：String, 自定义类等
 *      * 接口类型
 *      * 数组类型
 *    - 常量声明：使用 final 关键字
 *    - 变量作用域：
 *      * 局部变量：在方法或代码块中声明，只在声明它的方法或代码块中可见
 *      * 成员变量：在类中声明，但在方法外，整个类中可见
 *      * 类变量：使用static关键字声明，整个类共享
 * 
 * 4. 基本运算符
 *    - 算术运算符：+, -, *, /, %
 *    - 自增自减：++, --
 *    - 赋值运算符：=, +=, -=, *=, /=, %=
 *    - 比较运算符：==, !=, >, <, >=, <=
 *    - 逻辑运算符：&&(与), ||(或), !(非)
 *    - 位运算符：&, |, ^, ~, <<, >>, >>>
 *    - 三目运算符：条件 ? 表达式1 : 表达式2
 * 
 * 5. 类型转换
 *    - 隐式转换（自动类型转换）：
 *      * 小类型转大类型（如：int转long）
 *      * 转换规则：byte -> short -> int -> long -> float -> double
 *    - 显式转换（强制类型转换）：
 *      * 大类型转小类型，需要显式转换
 *      * 可能造成精度损失或数据溢出
 *      * 语法：(目标类型)变量名
 * 
 * 6. 控制语句
 *    - 条件语句：if, if-else, if-else if-else, switch
 *    - 循环语句：for, while, do-while
 *    - 跳转语句：break, continue, return
 * 
 * 7. 数组
 *    - 一维数组：int[] arr = new int[5];
 *    - 多维数组：int[][] matrix = new int[3][3];
 *    - 数组初始化：int[] arr = {1, 2, 3, 4, 5};
 *    - 数组长度：arr.length
 * 
 * 8. 字符串
 *    - String类：不可变字符串
 *    - StringBuilder/StringBuffer：可变字符串
 *    - 常用方法：length(), charAt(), substring(), indexOf(), equals()等        
 */
public class BasicSyntaxDemo {
    public static void main(String[] args) {
        // 变量声明与初始化
        int age = 25;
        float height = 170.5f;
//        long salary = 5000L;
        char gender = '男';
        String name = "张三";
        double salary = 5000.50;
        final double PI = 3.14159;
        
        // 输出变量
        System.out.println("姓名: " + name);
        System.out.println("年龄: " + age);
        System.out.println("薪资: " + salary);
        System.out.println("圆周率常量: " + PI);
        
        // 基本运算
        int a = 10;
        int b = 3;
        System.out.println("a + b = " + (a + b));
        System.out.println("a - b = " + (a - b));
        System.out.println("a * b = " + (a * b));
        System.out.println("a / b = " + (a / b));
        System.out.println("a % b = " + (a % b));
        
        // 自增自减
        int x = 5;
        System.out.println("x++ = " + (x++)); // 输出5，然后x变为6
        System.out.println("当前x = " + x);    // 输出6
        System.out.println("++x = " + (++x)); // x变为7，然后输出7
        
        // 类型转换
        int intValue = 100;
        long longValue = intValue; // 隐式转换
        
        double doubleValue = 123.456;
        int intFromDouble = (int) doubleValue; // 显式转换
        System.out.println("Double转Int: " + intFromDouble);
    }
}